const app = getApp()

Page({
  options: {
    // 纯数据字段 - data中能和正则匹配上的数据就不会应用于页面
    pureDataPattern: /^_/
  },
  data: {
    countDownVisible: false,
    // 手机号
    phoneNum: '',
    timeData: {},
    // 验证码
    _code: '',
    // 用户输入的验证码
    userCode: '',
    // 重定向页面路径
    _from: ''
  },
  onLoad ({ from }) {
    this.setData({ _from: from })
  },
  // 校验手机号
  verifyPhone () {
    const phoneReg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/
    const isVerify = phoneReg.test(this.data.phoneNum)
    if (!isVerify) {
      wx.$utils.toast('请输入合法手机号！')
      return false
    }
    return true
  },
  // 校验验证码
  verifyCode () {
    if (this.data._code !== this.data.userCode || this.data.userCode === '') {
      wx.$utils.toast('请输入正确验证码')
      return false
    } else {
      return true
    }
  },
  // 登录
  async login () {
    // 判断手机号
    if (!this.verifyPhone()) return
    // 判断验证码
    if (!this.verifyCode()) return
    // 发送请求
    const res = await wx.$http.post('/login', {
      mobile: this.data.phoneNum,
      code: this.data.userCode
    })
    if (res.code !== 10000) return wx.$utils.toast('登录失败')
    wx.$utils.toast('登陆成功')
    app.setToken('token', `Bearer ${res.data.token}`)
    app.setToken('refreshToken', `Bearer ${res.data.refreshToken}`)
    // 跳转
    wx.redirectTo({ url: this.data._from })
  },

  // 获取验证码
  async getCode () {
    // 判断手机号是否填写，是否符合格式
    if (!this.verifyPhone()) return
    // 显示倒计时
    this.setData({ countDownVisible: true })
    // 获取验证码
    const res = await wx.$http.get('/code', {
      mobile: this.data.phoneNum
    })
    if (res.code !== 10000) return wx.$utils.toast('发送失败')
    wx.$utils.toast('发送成功')
    console.log(res.data.code)
    this.setData({ _code: res.data.code })
  },

  // 设置验证码到剪贴板
  copyCode () {
    wx.setClipboardData({ data: this.data._code })
  },

  // 倒计时
  countDownChange (ev) {
    // this.setData({
    //   timeData: ev.detail
    // })
    // if (this.data.timeData.seconds === 0 && this.data.timeData.minutes !== 1) {
    //   this.setData({
    //     countDownVisible: false
    //   })
    // }
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.seconds > 0 || ev.detail.minutes === 1
    })
    // this.setData({
    //   timeData: ev.detail,
    //   countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0
    // })
  }
})
